package com.manage.db;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public class MenuTypeDBAdapter {

	// 本地Context对象
	private Context mContext = null;

	/* 数据库对象 */
	private SQLiteDatabase mSQLiteDatabase;

	/* 操作数据库的对象 */
	private DatabaseHelper mDatabaseHelper;

	/**
	 * 本应用的数据库版本号，有更新时改变
	 */
	private static final int DBVERSION = 2;

	/* 数据库名 */
	private final static String DATABASE_NAME = "menutype.db";

	/* 表名 */
	private final static String TABLE_NAME = "table_sort";

	/* 表中的字段 */
	private final static String TABLE_ID = "_id";
	private final static String TABLE_SORT = "sort";
	
	/* 创建表的sql语句 */
	private final static String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME
			+ " (" + TABLE_ID + " INTEGER," + TABLE_SORT
			+ " TEXT)";
	
	private static class DatabaseHelper extends SQLiteOpenHelper {
		/* 构造函数-创建一个数据库 */
		public DatabaseHelper(Context context, String name,
				CursorFactory cursorFactory, int version) {
			// 当调用getWritableDatabase()
			// 或 getReadableDatabase()方法时
			// 则创建一个数据库
			super(context, name, cursorFactory, version);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			// TODO 创建数据库后，对数据库的操作
			/* 在数据库mSQLiteDatabase中创建一个表 */
			db.execSQL(CREATE_TABLE);

		}

		@Override
		public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
			// TODO 更改数据库版本的操作
			db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
			onCreate(db);
		}

		@Override
		public void onOpen(SQLiteDatabase db) {
			super.onOpen(db);
			// TODO 每次成功打开数据库后首先被执行
		}
	}

	public MenuTypeDBAdapter(Context context) {
		mContext = context;
	}

	// 打开数据库，返回数据库对象
	public void open() throws SQLException {
		mDatabaseHelper = new DatabaseHelper(mContext, DATABASE_NAME, null,
				DBVERSION);
		mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
	}

	// 关闭数据库
	public void close() {
		mDatabaseHelper.close();
	}

	/**
	 * 插入数据
	 * 
	 * @return
	 */
	public long insertData(String paramString1, String paramString2) {
		if(fetchData(paramString1).getCount() <= 0) {
			ContentValues initialValues = new ContentValues();
			initialValues.put(TABLE_ID, paramString1);
			initialValues.put(TABLE_SORT, paramString2);
			return mSQLiteDatabase.insert(TABLE_NAME, null, initialValues);
		}
		return 0;
	}

	/**
	 * 删除一条数据
	 */
	public boolean deleteData(String rowId) {
		return mSQLiteDatabase.delete(TABLE_NAME, TABLE_ID + "=" + rowId, null) > 0;
	}

	/**
	 * 通过Cursor查询所有数据
	 */
	public Cursor fetchAllData() {
		return mSQLiteDatabase.query(TABLE_NAME, new String[] { TABLE_ID,
				TABLE_SORT }, null, null, null, null, null);
	}

	/**
	 * 查询指定数据
	 * @param rowId 
	 * @return
	 * @throws SQLException
	 */
	public Cursor fetchData(String rowId) throws SQLException {
		Cursor mCursor = mSQLiteDatabase.query(true, TABLE_NAME, new String[] {
				TABLE_ID, TABLE_SORT }, TABLE_ID
				+ "=" + rowId, null, null, null, null, null);

		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	}

	/**
	 * 更新一条数据
	 * 
	 */
	public boolean updateData(String rowId, String paramString1) {

		ContentValues args = new ContentValues();
		args.put(TABLE_SORT, paramString1);

		return mSQLiteDatabase.update(TABLE_NAME, args, TABLE_ID + "=" + rowId, null) > 0;
	}
}
